#pragma once
#include <graphics.h> //easxy图形库头文件
#include <vector>

using namespace std; // 名字空间

// 棋子位置
struct ChessPos
{
	int row; // 行号
	int col; // 列号
};

// 棋子颜色
typedef enum
{
	CHESS_WHITE = -1, // 黑棋
	CHESS_BLACK = 1	  // 白棋
} chess_kind_t;

class Chess
{
public:
	// 构造函数
	Chess(int gradeSize, int marginX, int marginY, float chessSize);

	// 棋子初始化
	void init();

	// 表示鼠标点击落子的位置是否有效
	bool clickBoard(int x, int y, ChessPos *pos);

	void chessDown(ChessPos *pos, chess_kind_t kind);

	int getChessDate(ChessPos *pos);

	int getGradeSize();

	bool checkOver();

private:
	IMAGE chessBlackImg; // 黑棋棋子
	IMAGE chessWhiteImg; // 白棋

	int gradeSize;	 // 棋盘的大小（13、15、17、19）
	int margin_x;	 // 棋盘的左侧边界
	int margin_y;	 // 棋盘的上边界
	float chessSize; // 棋子大小=棋盘小方格的大小

	// 存储当前棋局的棋子分布数据 0：空白 1：黑子 -1：白子
	// chessMap[3][5]表示棋盘的第3行第五列的落子情况
	vector<vector<int>> chessMap; // 二维数组定义一维数组的方法

	// 现在该谁落子
	bool playerFlag; // true:黑走，false:白走
};
